#ifndef __TASK_H__
#define __TASK_H__

#include "Timer.h"
#include <string>
#include <functional>
#include <chrono>

class EchoServer; // 前向声明

class TimerTask
{
public:
    TimerTask(EchoServer* server);
    ~TimerTask() = default;
    
    // 注册定时任务
    void registerHeartbeat();           // 心跳检测任务
    void registerStatusReport();        // 状态报告任务
    void registerConnectionTimeout();   // 连接超时检测任务
    void registerWelcomeMessage();      // 欢迎消息任务
    void registerCleanupTask();         // 清理任务
    
    // 动态任务
    int64_t scheduleDelayedMessage(const std::string& message, std::chrono::milliseconds delay);
    int64_t schedulePeriodicTask(const std::string& taskName, std::chrono::milliseconds interval, 
                                TimerCallback&& callback);
    void cancelTask(int64_t timerId);
    
private:
    EchoServer* _server;
    int _connectionCount = 0;
    std::chrono::steady_clock::time_point _startTime;
};

#endif